package deposito.entities;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.*;

import deposito.dto.Articulo;


@Entity
@Table(name="articulos")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="tipo")
public abstract class ArticuloEntity implements Serializable{
	private static final long serialVersionUID = -1022793483141805918L;

	@Id
	private Integer codigo;

	@Column(name="fecha")
	@Temporal(TemporalType.DATE)
	private Date fecha;
	
	@Column(name="nombre", length = 50)
	private String nombre;

	@Column(name="descripcion", length = 300)
	private String descripcion;
	
	@Column(name="marca", length = 20)
	private String marca;
	
	@Column(name="origen", length = 20)
	private String origen;
	
	@Column(name="Precio")
	private float Precio;
	
	@Column(name="fotoURL", length = 100)
	private String fotoURL;

	
	
	//Constructor
	public ArticuloEntity(){

	}
	
	
	public ArticuloEntity(Integer codigo, String nombre, String descripcion, String marca, String origen, float precio, String fotoURL, Date fecha) {
		this.codigo = codigo;
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.marca = marca;
		this.origen = origen;
		this.Precio = precio;
		this.fotoURL = fotoURL;
		this.fecha = fecha;
	}
	
	
	//Getters & Setters
	
	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getMarca() {
		return marca;
	}

	public void setMarca(String marca) {
		this.marca = marca;
	}

	public String getOrigen() {
		return origen;
	}

	public void setOrigen(String origen) {
		this.origen = origen;
	}

	public float getPrecio() {
		return Precio;
	}

	public void setPrecio(float precio) {
		Precio = precio;
	}

	public String getFotoURL() {
		return fotoURL;
	}

	public void setFotoURL(String fotoURL) {
		this.fotoURL = fotoURL;
	}
	
	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}


	//toDTO
	protected abstract Articulo toDTO();

}
